The present invention relates to digital image processing.
A digital image is a collection of discrete numerical values that define a visual appearance. The digital image can be represented by an array of pixels that are basic picture elements. Each pixel represents a local portion of the image and alone or together with other pixels determines local attributes, such as color, gray level, luminosity, transparency or other graphical attribute of the image portion. Alternatively, the digital image can be represented by object-oriented graphics that specifies one or more vector graphics objects for the image. Each vector graphics object is a one or more dimensional geometrical object, such as a line, a polygon, an arc, a circle, a cube or a sphere, defined by mathematical formulas. The vector object can have attributes, such as color, location, scale, mask, texture, line width or line pattern. For example, the texture specifies variations of one or more graphical attributes within a surface portion defined by the vector object. Textures can be used to illustrate three-dimensional effects in two dimensions. For displaying or other image processing operations, the vector objects can be rendered and rasterized onto a pixel array. The object-oriented graphics can also specify compositing rules on how to rasterize multiple vector objects of the image onto a pixel array.
Digital images are generated or processed by graphical software applications, such as presentation, animation, painting or design applications that are typically executed in a computer system including a central processing unit (“CPU”), and often, a separate graphics processing unit (“GPU”, also called a graphics processor) that is dedicated to process and display digital images. The GPU is designed to receive digital images, rasterize vector graphics objects, and perform coordinate transformations on images in a highly parallelized way. The GPU can be programmed based on an application program interface (“API”) that specifies a set of basic operations for building a graphics application that uses the GPU. The basic operations typically include polygon rendering operations and image data reading and writing operations. The GPU receives instructions and image data through an interface that is connected with other components of the computer system, such as the system's CPU, main memory or input/output (“I/O”) unit. The graphics processing unit is typically also configured to drive a display device or process image data received from an image capturing device.
Object detection is a process of determining whether an image contains instances of a particular object, such as a face. Typically, the image specifies a graphical representation of the particular object at an unknown location with an unknown variation in appearance. For example, the face can appear in the image at any location and its appearance can depend on lighting and viewing conditions, such as a viewing angle or a viewing distance. Thus, the face can appear in the image with any size and orientation within a broad range of sizes and orientations. To consider all such variations, object detection typically requires a large amount of data processing.